package com.study.easyexcel.api.annotation;

import com.alibaba.excel.annotation.ExcelProperty;
import com.study.easyexcel.common.constant.ExcelConstants;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 下拉框编辑器，列索引在自定义导出字段时，完全适配{@link ExcelProperty#index()}；但
 * 不完全适配{@link ExcelProperty#order()}
 *
 * @author yuhuan
 * @date 2023/5/14
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DropdownBox {
    /**
     * 创建下拉框的起始行索引
     */
    int firstRow() default 0;

    /**
     * 创建下拉框的结束行索引，Excel 2003版的最大行数{@code 2^16}
     */
    int lastRow() default 65536;

    /**
     * 创建下拉框的起始列索引
     */
    int firstCol() default 0;

    /**
     * 创建下拉框的结束列索引，Excel 2003版的最大列数{@code 2^8}
     */
    int lastCol() default 256;

    /**
     * 下拉框的显示列表
     */
    String[] explicitList() default {""};

    /**
     * 是否应用动态列表，设置为{@code true}将忽略{@link #explicitList()}的设置而使用用户自定义的设置
     */
    boolean dynamicList() default false;

    /**
     * 是否显示异常提示框
     */
    boolean showErrorBox() default false;

    /**
     * 输入无效数据的警告提示标题
     */
    String title() default ExcelConstants.ERR_BOX_TITLE;

    /**
     * 输入无效数据的警告提示内容
     */
    String message() default ExcelConstants.ERR_BOX_MESSAGE;
}
